// use actix_web::{HttpResponse, ResponseError};
// use actix_web::http::StatusCode;
// use sea_orm::Iden;
// use serde::{Deserialize, Serialize};
// use thiserror::Error;

// #[derive(Debug, Error)]
// pub enum AppErr {
//     #[error("数据库错误")]
//     Db,
//     #[error("验证错误: {0}")]
//     Validation(String),
//     #[error("业务逻辑错误")]
//     Business,
//     #[error("资源不存在")]
//     NotFound,
//     #[error("服务器错误")]
//     InternalServer,
//     #[error("请求错误：{0}")]
//     BadRequest(String),
//     #[error("请求错误：")]
//     MethodNotAllowed(String),
// }
// 
// impl AppErr {
//     // 为每个变体返回固定值
//     // 为每个变体返回固定值
//     fn info(&self) -> (u16,  String) {
// 
//         match self {
//             AppErr::Validation(message) =>      (23, message.to_string()),
//             AppErr::NotFound =>                         (17, "Endpoint not found".to_string()), // 修复此行
//             AppErr::BadRequest(message) =>      (19, message.to_string()),
//             AppErr::MethodNotAllowed(message)=> (20, message.to_string()),
//             _ =>                                        (18, "Internal server error".to_string()),
//         }
//     }
// 
//     // 直接获取 code
//     pub fn code(&self) -> u16 {
//         self.info().0
//     }
// 
//     // 直接获取 message
//     pub fn message(&self) -> String {
//         self.info().1
//     }
// }
// 
// impl From<sqlx::Error> for AppErr {
//     fn from(err: sqlx::Error) -> Self {
//         AppErr::Db
//     }
// }
// 
// impl ResponseError for AppErr {
//     fn status_code(&self) -> StatusCode {
//         StatusCode::OK
//     }
//     fn error_response(&self) -> HttpResponse {
//         let error_response = ApiResponse::<()>::error(self.code(), self.message());
//         HttpResponse::build(self.status_code()).json(error_response)
//     }
// }



// #[derive(Serialize, Debug, Deserialize)]
// pub struct ApiResponse<T> {
//     pub code: u16,
//     pub message: String,
//     pub data: Option<T>,
// }
// 
// impl<T> ApiResponse<T> {
// 
//     pub fn success() -> Self {
//         Self {
//             code: 0,
//             message: "success".to_string(),
//             data: None,
//         }
//     }
//     // 成功响应
//     pub fn success_with_data(data: T) -> Self {
//         Self {
//             code: 0,
//             message: "success".to_string(),
//             data: Some(data),
//         }
//     }
// 
//     // 成功响应（无数据）
//     pub fn success_with_message(message: String) -> Self {
//         Self {
//             code: 0,
//             message,
//             data: None,
//         }
//     }
// 
//     // 错误响应
//     pub fn error(code: u16, message: String) -> Self {
//         Self {
//             code,
//             message,
//             data: None,
//         }
//     }
// }
// 
// /// 分页查询参数
// #[derive(Debug, Clone)]
// pub struct PageQuery<T> {
//     /// 页码，从1开始
//     pub page: u64,
//     /// 每页条数
//     pub size: u64,
//     /// 排序字段
//     pub sort_by: Option<String>,
//     /// 排序方向 (asc/desc)
//     pub sort_order: Option<String>,
// 
//     pub search: Option<T>,
// }
// 
// impl <T> PageQuery<T> {
//     pub fn new(page: u64, size: u64) -> Self {
//         Self {
//             page: page.max(1),
//             size: size.max(1).min(100), // 限制每页最大100条
//             sort_by: None,
//             sort_order: None,
//             search: None,
//         }
//     }
// 
//     /// 获取偏移量
//     pub fn offset(&self) -> u64 {
//         (self.page - 1) * self.size
//     }
// 
//     /// 获取限制数量
//     pub fn limit(&self) -> u64 {
//         self.size
//     }
// }
// 
// /// 分页响应数据
// #[derive(Serialize, Debug)]
// pub struct PageResponse<T> {
//     /// 数据列表
//     pub records: Vec<T>,
//     /// 总记录数
//     pub total: u64,
//     /// 当前页码
//     pub page: u64,
//     /// 每页条数
//     pub size: u64,
//     /// 总页数
//     pub pages: u64,
// }
// 
// impl<T> PageResponse<T> {
//     pub fn new<U>(records: Vec<T>, total: u64, query: &PageQuery<U>) -> Self {
//         let pages = if query.size > 0 {
//             (total + query.size - 1) / query.size
//         } else {
//             0
//         };
// 
//         Self {
//             records,
//             total,
//             page: query.page,
//             size: query.size,
//             pages,
//         }
//     }
// 
//     /// 创建空的分页响应
//     pub fn empty<U>(query: &PageQuery<U>) -> Self {
//         Self {
//             records: Vec::new(),
//             total: 0,
//             page: query.page,
//             size: query.size,
//             pages: 0,
//         }
//     }
// }